#ifndef _FINDLINE_H_
#define _FINDLINE_H_

#include "stdint.h"
typedef struct ControlCenter ControlCenterTypeDef;//前置声明
/*巡线方法*/
typedef enum {
  FL_default,//默认
  FL_slow,//慢速
  FL_middle,//中速
  FL_quick ,//快速
  FL_Reversing,//倒车
  FL_Step,//阶梯
  FL_WAVE,//波浪板
  FL_KNIFE,//刀山板
  FL_low_adjust,//低台校正
  FL_high_adjust,//高台校正
  FL_DownPlatform,//下平台(下坡途中)
  FL_PreDown,//准备下坡(包括下坡前的平地和车有一半在坡上)//下平台前在平台上的盲走（或者巡线）
  FL_UP_LONG,//上坡长直线
  FL_UP_LONG_SLOW,//上坡长直线
  FL_DOWN_LONG,//下坡长直线
  FL_DOWN_LONG_SLOW,//下坡长直线
  FL_bridge,//桥上
  FL_bridge_slow,//下桥前慢速
  FL_Arc,//圆弧上的寻线
  FL_seesaw,//在跷跷板上
  FL_seesaw_slow,//在跷跷板中间减速
  FL_TRACE_L,//跟踪
  FL_speedUp,//加速
  FL_speedUp_Back,//后退加速
  FL_speedBest,//高速
  FL_No,//不巡线，直接退出，会将电机的控制权交给其他模块
  NFL_Platform,//平台上盲走（上坡后在平台上）
  NFL_Bridge,//上桥的坡盲走
  NFL_Slow,//盲走
  NFL_Arc,//圆弧上的盲走
  NFL_Back,//后退盲走
  NFL_GYRO_UP,//根据陀螺仪盲走上坡
  NFL_GYRO_UP_PLATFORM,//根据陀螺仪盲走平台前的上坡
  NFL_GYRO,//根据陀螺仪盲走
  NFL_GYRO_DOWN,//根据陀螺仪盲走下坡
  NFL_GYRO_BACK,//根据陀螺仪盲走后退
} FindLine;

void findLine_Task(const ControlCenterTypeDef *control);
void findLine_test(int rank);
void alongGyro(float angle, int16_t speed);

#endif // !_